硬碟空間不足,無法進入容器,清除資料大作戰
#2024/07/16,docker compose設定方法
睡睡念
上週同事問我怎麼連進去容器裏面,
我很順的回答指令,
然後他就跳出 這個錯誤
failed to create runc console socket: mkdir /tmp/pty2070058578: no space left on device: unknown
正文
處理問題
從錯誤訊息看起來,就是空間不足。
先看看是哪邊硬碟吃滿了
df -h
然後看到user 100%...然後掛載在 / 根目錄下。
再來檢查當前目錄,每個資料夾的大小
du -hcd 1 | sort -n
最後追阿追的,追到了container的目錄
/var/lib/docker/
裏面有一些container容量吃得很多,
最後確認是該container的log,那就砍了吧。
rm -rf <container_id>.log
再請同事連線,還是出現同樣的錯誤,
是由於linux的特性,就算你砍了檔案,
此檔案還是被咬住沒有釋放開(window是連砍都不能砍),
所以此時去查硬碟大小,還是100% used的狀態,
將docker重開後,就能釋放空間了。
解決問題
現在知道是container的log會一直增長,
那就設個條件,讓他長到一定程度後就不能再長大了。
如果此路徑沒檔案,則建立
vim /etc/docker/daemon.json
輸入
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"500m","max-file":"3"
}
}
max-size : 單個容器的單檔大小
max-file: log數量
好了後,重啓服務
systemctl daemon-reload
systemctl restart docker
需要注意的是:設定的日誌大小規則,只對新建的容器有效
ref.
- 【docker】docker限制記錄檔大小的方法+查看記錄檔的方法
- docker 報錯: failed to create runc console socket: mkdir /tmp/pty328598598: no space left on device
2024/07/16,docker compose設定方法
在docker compose 增加下面語法
services:
srs:
container_name: srs
logging:
driver: "json-file"
options:
max-size: "300m"
max-file: "3"